package com.ng.desktop.fpa.model;

import java.text.ParseException;
import java.util.Date;

import org.apache.commons.lang.StringUtils;
import org.xBaseJ.DBF;
import org.xBaseJ.xBaseJException;

import com.ng.desktop.fpa.persistence.DBFBuilder;
import com.ng.framework.util.NGUtil;

public class FacturaDBF implements DBFBuilder<FacturaDBF> {

	public static final Integer SERIE = 0;
	public static final Integer NUMERO_FACTURA = 1;
	public static final Integer FECHA = 2;

	private String cserie;
	private String nnumfac;
	private Date fecha;

	public FacturaDBF() {
	}
	public FacturaDBF(String cserie, String nnumfac, Date fecha) {
		super();
		this.cserie = cserie;
		this.nnumfac = nnumfac;
		this.fecha = fecha;
	}

	public FacturaDBF build(Object[] objectRow) {

		String cserie = (String) objectRow[FacturaDBF.SERIE];
		String nnumfac = objectRow[FacturaDBF.NUMERO_FACTURA] != null ? objectRow[FacturaDBF.NUMERO_FACTURA].toString() : "";
		int indexOf = nnumfac.indexOf(".");
		if (indexOf != -1) {
			nnumfac = nnumfac.substring(0, indexOf);
		}

		Date fecha = (Date) objectRow[FacturaDBF.FECHA];

		return new FacturaDBF(cserie.trim(), nnumfac, fecha);
	}

	@Override
	public FacturaDBF build(DBF classDB) throws ArrayIndexOutOfBoundsException, xBaseJException {
		String cserie = classDB.getField("cserie").get();
		String nnumfac = classDB.getField("nnumfac").get();
		String fecha = classDB.getField("dfecfac").get();
		Date parsedFecha = null;
		if (!StringUtils.isEmpty(fecha.trim())) {
			try {
				parsedFecha = NGUtil.yyyyMMdd_dateFormat.parse(fecha);
			} catch (ParseException e) {
				e.printStackTrace();
			}
		}

		return new FacturaDBF(cserie.trim(), nnumfac.trim(), parsedFecha);
	}
	public String getCserie() {
		return cserie;
	}

	public String getNnumfac() {
		return nnumfac;
	}

	public Date getFecha() {
		return fecha;
	}

	public String getKey() {
		return this.cserie + "-" + nnumfac;
	}

}
